package br.sddp.dao;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.TypedQuery;

import br.sddp.modelo.Resposta;
import br.sddp.util.JPAUtil;
import br.sddp.util.TratadorExceptions;

public class RespostaDAO extends GenericDAO {
	
	/**
	 * Lista todas as respostas.
	 * 
	 * @return
	 */
	public List<Resposta> listarRespostas() {
		
		List<Resposta> respostas = new ArrayList<Resposta>();
		
		em = new JPAUtil().getEntityManager();
		
		try {
			em.getTransaction().begin();
			TypedQuery<Resposta> query = em.createNamedQuery("Respostas.FindAll", Resposta.class);
			respostas = query.getResultList();
		}
		catch (Exception e) {
			em.getTransaction().rollback();
			TratadorExceptions.tratarExceptionsGerais(e);			
		}
		finally {
			em.close();
		}
		
		return respostas;
	}
	
	/**
	 * Busca uma resposta pela id de uma duvida.
	 * 
	 * @param id
	 * @return
	 */
	public Resposta buscarPorDuvida(Long id) {
		
		Resposta resposta = null;
		
		em = new JPAUtil().getEntityManager();
		
		try {
			em.getTransaction().begin();
			TypedQuery<Resposta> query = em.createQuery("SELECT r FROM Resposta r WHERE r.idDuvida = :id", Resposta.class);
			query.setParameter("id", id);
			resposta = query.getSingleResult();
		}
		catch (Exception e) {
			em.getTransaction().rollback();
			TratadorExceptions.tratarExceptionsGerais(e);
		}
		finally {
			em.close();
		}
		
		return resposta;
	}
}
